package com.shuda.business.crm.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shuda.business.crm.entity.ChannelSourceEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 渠道来源配置Mapper接口
 * @author shuda
 */
@Mapper
public interface ChannelSourceMapper extends BaseMapper<ChannelSourceEntity> {

    /**
     * 根据状态分页查询渠道来源
     * @param page 分页对象
     * @param channelStatus 渠道状态
     * @return 分页结果
     */
    IPage<ChannelSourceEntity> selectPageByStatus(Page<ChannelSourceEntity> page, @Param("channelStatus") String channelStatus);

    /**
     * 根据类型分页查询渠道来源
     * @param page 分页对象
     * @param channelType 渠道类型
     * @return 分页结果
     */
    IPage<ChannelSourceEntity> selectPageByType(Page<ChannelSourceEntity> page, @Param("channelType") String channelType);

    /**
     * 查询活跃的渠道来源列表
     * @return 活跃的渠道来源列表
     */
    List<ChannelSourceEntity> selectActiveChannels();

    /**
     * 根据编码查询渠道来源
     * @param channelCode 渠道编码
     * @param tenantId 租户ID
     * @return 渠道来源
     */
    ChannelSourceEntity selectByChannelCode(@Param("channelCode") String channelCode, @Param("tenantId") Long tenantId);

    /**
     * 查询最大排序号
     * @param tenantId 租户ID
     * @return 最大排序号
     */
    Integer selectMaxSortOrder(@Param("tenantId") Long tenantId);
}